<?php
/**
 * Created by PhpStorm.
 * User: 戎大富
 * Date: 2018/6/13
 * Time: 10:40
 */
namespace app\admin\controller;
use think\Controller;
use think\Db;
include_once $_SERVER ['DOCUMENT_ROOT'] . '/upacp_demo_app/sdk/acp_service.php';

class  Tuiupacp extends Base  {
    // 定义配置项
    private $config=array(
        'merId'              => '898320156994931',

    );
    /**
     * 异地登录验证
     * @return string
     */
    public function _initialize()
    {
        // 如果配置项为空 则直接返回
        if (!empty($config)) {
            $this->config=$config;
        }
    }

    /**
     * 退款
     * @param  array $order 订单 必须包含支付所需要的参数 body(产品描述)、total_fee(订单喵额)、out_trade_no(订单号)、product_id(产品id)、trade_type(类型：JSAPI，NATIVE，APP)
     */
    public function UpacpTuiKuan($number, $pay,$QueryId){
        $params = array(
            //以下信息非特殊情况不需要改动
            'version' => \com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->version,		      //版本号
            'encoding' => 'utf-8',		      //编码方式
            'signMethod' => \com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->signMethod,		      //签名方法
            'txnType' => '04',		          //交易类型
            'txnSubType' => '00',		      //交易子类
            'bizType' => '000201',		      //业务类型
            'accessType' => '0',		      //接入类型
            'channelType' => '07',		      //渠道类型
            'backUrl' => 'http://www.specialUrl.com', //后台通知地址（如果不需要发后台通知，可以固定上送http://www.specialUrl.com）

            //TODO 以下信息需要填写
            'orderId' => $number,	    //商户订单号，8-32位数字字母，不能含“-”或“_”，可以自行定制规则，重新产生，不同于原消费，此处默认取demo演示页面传递的参数
            'merId' => $this->config['merId'],	        //商户代码，请改成自己的测试商户号，此处默认取demo演示页面传递的参数
            'origQryId' => $QueryId, //原消费的queryId，可以从查询接口或者通知接口中获取，此处默认取demo演示页面传递的参数
            'txnTime' => date('YmdHis'),	    //订单发送时间，格式为YYYYMMDDhhmmss，重新产生，不同于原消费，此处默认取demo演示页面传递的参数
            'txnAmt' => $pay*100      //交易金额，退货总金额需要小于等于原消费
        );
        \com\unionpay\acp\sdk\AcpService::sign ( $params ); // 签名
        $url = \com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->backTransUrl;
        $result_arr = \com\unionpay\acp\sdk\AcpService::post ($params,$url);

        if(count($result_arr)<=0) { //没收到200应答的情况
            $res['msg'] = '无应答，请稍后再试';
            $res['status'] = 0;
            return $res;
        }
        if (!\com\unionpay\acp\sdk\AcpService::validate ($result_arr) ){
            $res['msg'] = '验签失败，请稍后再试';
            $res['status'] = 0;
            return $res;
        }
        if ($result_arr["respCode"] == "00"){
            //成功
            $res['msg'] = '已受理';
            $res['status'] = 200;
            return $res;
        } else {
            //其他应答码做以失败处理
            $res['msg'] = $result_arr["respMsg"];
            $res['status'] = 0;
            return $res;
        }
    }

}